home *** CD-ROM | disk | FTP | other *** search
/ Archive Magazine CD 1995 / Archive Magazine CD 1995.iso / discs / prog_disc / volume_7 / issue_07 / drawfile / !RendDraw / h / file < prev   
Encoding:
Text File  |  1993-02-11  |  9.2 KB  |  341 lines

  1. /*
  2.  * Name   : file.h
  3.  * Desc   : whole/part file handling for manual program
  4.  * Author : James Bye
  5.  * Date   : 15th October 1991
  6.  */
  7.  
  8. #define __file_h
  9.  
  10. #ifndef __kernel_h
  11. #include "kernel.h"
  12. #endif
  13.  
  14.  
  15. #ifndef BOOL
  16. #define BOOL int
  17. #define TRUE   1
  18. #define FALSE  0
  19. #endif
  20.  
  21.  
  22. /*
  23.  * Name : file_lasterror
  24.  * Desc : returns the last error encountered by this module
  25.  * In   : None
  26.  * Out  : pointer to error block
  27.  */
  28.  
  29. extern _kernel_oserror *file_lasterror ( void );
  30.  
  31.  
  32. /*
  33.  * Name : file_memdump
  34.  * Desc : dumps memory to a file
  35.  * In   : char *filename   - pointer to a filename
  36.  *        int   filetype   - filetype number
  37.  *        char *buffer     - pointer to a buffer
  38.  *        int   size       - size of buffer
  39.  * Out  : pointer to error block
  40.  */
  41.  
  42. extern _kernel_oserror *file_memdump ( char *filename, int filetype,
  43.                                        char *buffer, int size       );
  44.  
  45.  
  46. /*
  47.  * Name : file_writecat
  48.  * Desc : a group of functions that deal with catalogue writing
  49.  *        they are prototyped as follows :-
  50.  *
  51.  *    file_writecat1  - writes load address,exec address,attribs to file
  52.  *    file_writecat2  - writes load address only
  53.  *    file_writecat3  - writes execution address only
  54.  *    file_writecat4  - writes attribs only
  55.  *    file_writecat9  - date/time stamp; filetype to data
  56.  *    file_writecat18 - set filetype and stamp
  57.  *
  58.  * In  : int   code- reason code           
  59.  *       char *p   - pathname
  60.  *       int   r2  - register value for R2 - depending on call
  61.  *       int   r3  - register value for R3 - depending on call
  62.  *       int   r5  - register value for R5 - depending on call
  63.  * Out : pointer to error block
  64.  * Info: for call 1  - r2:  load address
  65.  *                     r3:  exec address
  66.  *                     r5:  attribs
  67.  *       for call 2  - r2:  load address
  68.  *       for call 3  - r3:  execution address
  69.  *       for call 4  - r5:  attribs
  70.  *       for call 9  - None
  71.  *       for call 18 - r2:  filetype
  72.  */
  73.  
  74. #ifndef __writecat_protos
  75. #define file_writecat1(p,load_addr,exec_addr,attribs) file_writecat(1,p,load_addr,exec_addr,attribs)
  76. #define file_writecat2(p,load_addr)                   file_writecat(2,p,load_addr,0,0)
  77. #define file_writecat3(p,exec_addr)                   file_writecat(3,p,0,exec_addr,0)
  78. #define file_writecat4(p,attribs)                     file_writecat(4,p,0,0,attribs)
  79. #define file_writecat9(p)                             file_writecat(9,p,0,0,0)
  80. #define file_writecat18(p,filetype)                   file_writecat(18,p,filetype,0,0)
  81. #endif
  82.  
  83. extern _kernel_oserror *file_writecat ( int code, char *p, int r2, int r3, int r5 );
  84.  
  85.  
  86. /*
  87.  * Name : file_readcat
  88.  * Desc : reads catalogue information for a file
  89.  * In   : char *filename   - pointer to a filename
  90.  *        int  *type       - pointer for the type
  91.  *        int  *laddr      - pointer for load address 
  92.  *        int  *eaddr      - pointer for exec address
  93.  *        int  *length     - pointer for length
  94.  *        int  *attrib     - pointer for attributes
  95.  * Out  : returns pointer to error block
  96.  * Info : any of the destination pointer can set to NULL and if so
  97.  *        then they will not be written to
  98.  *        to find the size only, you would call as follows :-
  99.  *         file_readcat(filename,NULL,NULL,NULL,&size,NULL);
  100.  */                        
  101.  
  102. extern _kernel_oserror *file_readcat ( char *filename, int *type, int *laddr, int *eaddr,
  103.                                        int *length, int *attrib );
  104.  
  105.  
  106.  
  107. /*
  108.  * Name : file_delete ( char *filename )
  109.  * Desc : deletes a named file
  110.  * In   : char *filename   - the name of the file
  111.  * Out  : pointer to an error block
  112.  */
  113.  
  114. extern _kernel_oserror *file_delete ( char *filename );
  115.  
  116.  
  117. /*
  118.  * Name : file_createfile
  119.  * Desc : creates an empty file of specified size
  120.  * In   : char *filename     - name of file to create
  121.  *        int   filetype     - filetype
  122.  *        int   size         - size of file to create
  123.  * Out  : pointer to an error block
  124.  */
  125.  
  126. extern _kernel_oserror *file_createfile ( char *filename, int filetype, int size );
  127.  
  128.  
  129. /*
  130.  * Name : file_createdir
  131.  * Desc : creates a directory
  132.  * In   : char *filename  - name of directory
  133.  *        int entries     - number of files allowed in directory
  134.  * Out  : pointer to an error block
  135.  */
  136.  
  137. extern _kernel_oserror *file_createdir ( char *filename, int entries );
  138.  
  139.  
  140. /*
  141.  * Name : file_load
  142.  * Desc : loads a named file into memory
  143.  * In   : char *filename    - name of file to load
  144.  *        int   address     - address of memory to load file in
  145.  * Out  : pointer to error block
  146.  */
  147.  
  148. extern _kernel_oserror *file_load ( char *filename, int address );
  149.  
  150.  
  151. /*
  152.  * Name : file_read_seqptr
  153.  * Desc : reads the files sequential pointer
  154.  * In   : int  handle   - file handle
  155.  *        int *seqptr   - desination for seq ptr
  156.  * Out  : pointer to error block
  157.  */
  158.  
  159. extern _kernel_oserror *file_read_seqptr ( int handle, int *seqptr );
  160.  
  161.  
  162. /*
  163.  * Name : file_write_seqptr
  164.  * Desc : writes the files sequential pointer
  165.  * In   : int  handle  - file handle
  166.  *        int  seqptr  - new seq ptr
  167.  * Out  : pointer to error block
  168.  */
  169.  
  170. extern _kernel_oserror *file_write_seqptr ( int handle, int seqptr );
  171.  
  172.  
  173. /*
  174.  * Name : file_read_ext
  175.  * Desc : reads a files open extent
  176.  * In   : int  handle   - file handle
  177.  *        int *ext      - destination for extent
  178.  * Out  : pointer to error block
  179.  */
  180.  
  181. extern _kernel_oserror *file_read_ext ( int handle, int *ext );
  182.  
  183.  
  184. /*
  185.  * Name : file_write_ext
  186.  * Desc : writes a files open extent
  187.  * In   : int  handle   - file handle
  188.  *        int  ext      - new extent
  189.  * Out  : pointer to error block
  190.  */
  191.  
  192. extern _kernel_oserror *file_write_ext ( int handle, int ext );
  193.  
  194.  
  195. /*
  196.  * Name : file_read_allocsize
  197.  * Desc : reads a files allocated size
  198.  * In   : int  handle   - file handle
  199.  *        int *size     - destination for size
  200.  * Out  : pointer to error block
  201.  */
  202.  
  203. extern _kernel_oserror *file_read_allocsize ( int handle, int *size );
  204.  
  205.  
  206. /*
  207.  * Name : file_read_EOF
  208.  * Desc : reads a files EOF state
  209.  * In   : int  handle - files handle
  210.  * Out  : TRUE if EOF else FALSE
  211.  */
  212.  
  213. extern BOOL file_read_eof ( int handle );
  214.  
  215.  
  216. /*
  217.  * Name : file_ensure_size
  218.  * Desc : Ensures an open files size
  219.  * In   : int  handle  - file handle
  220.  *        int  size    - size to ensure to
  221.  * Out  : Pointer to error block
  222.  */
  223.  
  224. extern _kernel_oserror *file_ensure_size ( int handle, int size );
  225.  
  226.  
  227. #ifndef FILE_INFO_BITS_DEFINED
  228. #define FILE_INFO_BITS_DEFINED
  229. #define STREAM_INTERACTIVE       4
  230. #define STREAM_SUPPORTS_GBPB     8
  231. #define OBJECT_DIRECTORY        16
  232. #define READ_ACCESS             32
  233. #define WRITE_ACCESS            64
  234. #define OBJECT_WRITTEN         128
  235. #define END_OF_FILE            256
  236. #define STREAM_UNBUFFERED      512
  237. #define STREAM_UNALLOCATED    1024
  238. #define STREAM_CRITICAL       2048
  239. #define DATA_LOST             4096
  240. #endif
  241.  
  242.  
  243. /*
  244.  * Name : file_read_handleinfo 
  245.  * Desc : reads information on a files handle
  246.  * In   : int handle   - file handle
  247.  * Out  : status of file handle
  248.  */
  249.  
  250. extern int file_read_handleinfo ( int handle );
  251.  
  252.  
  253. /*
  254.  * Name : file_readabyte
  255.  * Desc : reads a byte from an open file
  256.  * In   : int handle   - file handle
  257.  * Out  : int          - byte read
  258.  * Info : will return -1 if an error is encountered
  259.  */
  260.  
  261. extern int file_readabyte ( int handle );
  262.  
  263.  
  264.  
  265. /*
  266.  * Name : file_writeabyte
  267.  * Desc : writes a byte to an open file
  268.  * In   : int handle    - file handle
  269.  *        int byte      - byte to write
  270.  * Out  : pointer to error block
  271.  */
  272.  
  273. extern _kernel_oserror *file_writeabyte ( int handle, int byte );
  274.  
  275.  
  276. /*
  277.  * Name : file_writebytes
  278.  * Desc : writes a buffer to an open file
  279.  * In   : int   handle     - file handle
  280.  *        char *buffer     - pointer to buffer to write
  281.  *        int   offset     - offset in buffer to write from
  282.  *        int   nwrite     - number of bytes to write to file
  283.  *        int   seqptr     - sequential file pointer
  284.  * Out  : pointer to error block    
  285.  * Info : if seqptr == -1 then writing will start from current
  286.  *        sequential file pointer
  287.  */
  288.  
  289. extern _kernel_oserror *file_writebytes ( int handle, char *buffer,
  290.                                           int offset, int nwrite,
  291.                                           int seqptr               );
  292.  
  293.  
  294. /*
  295.  * Name : file_readbytes
  296.  * Desc : writes a buffer to an open file
  297.  * In   : int   handle     - file handle
  298.  *        int   buffer     - pointer to buffer 
  299.  *        int   nread      - number of bytes to read
  300.  *        int   seqptr     - sequential file pointer
  301.  * Out  : pointer to error block    
  302.  * Info : if seqptr == -1 then writing will start from current
  303.  *        sequential file pointer
  304.  */
  305.  
  306. extern _kernel_oserror *file_readbytes  ( int handle, char *buffer,
  307.                                           int nread,  int seqptr  );
  308.  
  309.  
  310.  
  311. #ifndef OPEN_TYPES
  312. #define OPEN_TYPES
  313. #define OPEN_EXIST_READ         "r"
  314. #define OPEN_NEW_READ_WRITE     "wr"
  315. #define OPEN_EXIST_READ_WRITE   "wr+"
  316. #endif
  317.  
  318. /*
  319.  * Name : file_open 
  320.  * Desc : opens a specified file
  321.  * In   : char *filename    - the file to open
  322.  *        int  *handle      - destination for file handle
  323.  *        char *oa          - open access indicator
  324.  * Out  : pointer to error block
  325.  */
  326.  
  327. extern _kernel_oserror *file_open ( char *filename, int *handle, char *oa );
  328.  
  329.  
  330.  
  331. /*
  332.  * Name : file_close 
  333.  * Desc : closes a file
  334.  * In   : int handle  -  file handle
  335.  * Out  : pointer to error block
  336.  */
  337.      
  338. extern _kernel_oserror *file_close ( int handle );
  339.  
  340.  
  341.